#ifndef _SPINLOCK_H_
#define _SPINLOCK_H_

#include "../../include/types.h"

// 自旋锁结构体
typedef struct {
  volatile int locked;   // 锁的状态：0=未锁，1=已锁
  char *name;            // 锁的名称（用于调试）
  int cpu;               // 持有锁的CPU（单核永远是0）
  int count;             // 持有锁的次数
} spinlock;

// 函数声明
void initlock(spinlock *lk, char *name);
void acquire(spinlock *lk);
void release(spinlock *lk);
int holding(spinlock *lk);

// 中断嵌套管理（单核简化版）
void push_off(void);
void pop_off(void);

#endif
